import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase a partir de la cual se crean los objetos terodactilos 
 * 
 * @author Omar Espino 
 * @version 20/11/2014
 */
public class Terodactilo extends Enemigo
{
    private GreenfootImage []teroDerecha;
    private GreenfootImage []teroIzquierda;
    private GreenfootImage teroDer1;
    private GreenfootImage teroDer2;
    private GreenfootImage teroIzq1;
    private GreenfootImage teroIzq2;
    
    private SimpleTimer reloj;
    private SimpleTimer relojHielo;
    
    private int numImagen;
    
    private final int DERECHA=0;
    private final int IZQUIERDA=1;
    
    /**constructor de la clase */
    /**@param recibe un entero int que sera la direccion en la cual comenzara viendo el terodactilo al crearse*/
    public Terodactilo(int unaDireccion)
    {
        teroDerecha=new GreenfootImage[2];
        teroIzquierda=new GreenfootImage[2];

        teroDer1=new GreenfootImage("teroDer1.png");
        teroDer2=new GreenfootImage("teroDer2.png");
        teroIzq1=new GreenfootImage("teroIzq1.png");
        teroIzq2=new GreenfootImage("teroIzq2.png");

        teroDerecha[0]=teroDer1;
        teroDerecha[1]=teroDer2;

        teroIzquierda[0]=teroIzq1;
        teroIzquierda[1]=teroIzq2;
        
        numImagen=0;
        this.setDireccion(unaDireccion);
        this.setVelocidad(15);
        reloj=new SimpleTimer();
        relojHielo=new SimpleTimer();
        relojHielo.mark();
        reloj.mark();
    }
    
    /**metodo principal de como actuaran los terodactilos en el juego*/
    public void act() 
    {
        movimiento();
        arrojaHielo();
    }    
    
    /**metodo que hace el movimiento en las dos direcciones izquierda y derecha con sus respectivas animaciones*/
    public void movimiento()
    {
       if(getDireccion()==DERECHA)
        {
            if(reloj.millisElapsed()>150)
            {
                setImage(teroDerecha[numImagen]) ;  
                setLocation(getX()+getVelocidad(),getY());
                reloj.mark();

                if(numImagen<1)
                {
                    numImagen++;  
                }
                else
                {
                    numImagen=0;
                }

                if(isTouching(Baseder.class))
                {
                    setDireccion(1);
                }
            }

        }

        if(getDireccion()==IZQUIERDA)
        {
            if(reloj.millisElapsed()>150)
            {
                setImage(teroIzquierda[numImagen]) ;  
                setLocation(getX()-getVelocidad(),getY());
                reloj.mark();
                if(numImagen<1)
                {
                    numImagen++;  
                }
                else
                {
                    numImagen=0;
                }

                if(isTouching(Baseizq.class))
                {
                    setDireccion(0);
                }
            }
        } 
    }
    
    /**metodo que crea un hielo para arrojarlo desde el terodactilo al suelo*/
    public void arrojaHielo()
    {
        if(relojHielo.millisElapsed()>1500)
        {  
           Hielo unHielo=new Hielo();
           getWorld().addObject(unHielo,getX(),getY()+20);
           relojHielo.mark();
        }
    }
}
